The present invention, in some embodiments thereof, relates to virtual machine (VM) guest memory management and, more particularly, but not exclusively, to reduction of disk read rate in management of VM guest memory.
The main enabling technology for cloud computing is machine virtualization, which abstracts the rigid physical infrastructure and turns it into soft components that may be easily managed and used. Clouds and virtualization are driven by strong economical incentives, notably the ability to consolidate multiple VM guest servers on one physical host. The number of VM guests that can be consolidated and supported on one physical host is typically limited by the size of the host's physical memory, motivating hosts to overcommit their memory to increase their capacity.
Overcommitment of memory requires memory management to guarantee proper operation of all VM guests consolidated on the host. This is usually done by coordinating temporary allocations of unused memory assigned to lightly loaded VM guests to be used by more heavily loaded VM guests.
Basic overcommitment memory management is done by uncooperative virtual machine monitor (VMM) swapping where the host VMM overcommits the memory by swapping out guest memory pages to disk without the VM guest's knowledge.
Another overcommitment memory management method is using a “balloon” driver installed in the guest VM. Balloons allocate pinned guest memory pages at the request of the host VMM, thereby ensuring the VM guest will not use them so that they could be utilized for some other purpose by the host VMM.
Balloons' performance is significantly better then uncooperative VMM swapping, however, it is not a complete solution. Hosts cannot rely on VM guest cooperation because, for example, clients may have disabled or opted not to install the balloon or failed to install the balloon due to technical difficulties. Also, balloons could reach their upper bound, set by the VMM (and optionally adjusted by clients) to enhance stability and to accommodate various VM guest limitations, they might be unable to reclaim memory fast enough to accommodate the demand that the host must satisfy or they could be temporarily unavailable due to inner VM guest activity such as booting or running high priority processes that starve guest kernel services.
Therefore, in most host systems, overcommitment memory management is done by using balloons whenever possible, and otherwise resorting to uncooperative VMM swapping.